using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._ReadyToUseTools
{
    /// <summary>
    /// <para>ServerTool 1</para>
    /// <para></para>
    /// <para></para>
    /// </summary>    
    [DisplayName("ServerTool 1")]
    public class EditVehicleRoutingProblem : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public EditVehicleRoutingProblem()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_orders">
        /// <para>Orders</para>
        /// <para></para>
        /// <para></para>
        /// </param>
        /// <param name="_depots">
        /// <para>Depots</para>
        /// <para></para>
        /// <para></para>
        /// </param>
        /// <param name="_routes">
        /// <para>Routes</para>
        /// <para></para>
        /// <para></para>
        /// </param>
        public EditVehicleRoutingProblem(object _orders, object _depots, object _routes)
        {
            this._orders = _orders;
            this._depots = _depots;
            this._routes = _routes;
        }
        public override string ToolboxName => "Ready To Use Tools";

        public override string ToolName => "ServerTool 1";

        public override string CallName => "agolservices.EditVehicleRoutingProblem";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_orders, _depots, _routes, _breaks, _time_units.GetGPValue(), _distance_units.GetGPValue(), _analysis_region.GetGPValue(), _default_date, _uturn_policy.GetGPValue(), _time_window_factor.GetGPValue(), _spatially_cluster_routes, _route_zones, _route_renewals, _order_pairs, _excess_transit_factor.GetGPValue(), _point_barriers, _line_barriers, _polygon_barriers, _use_hierarchy_in_analysis, _restrictions, _attribute_parameter_values, _populate_route_lines, _route_line_simplification_tolerance, _populate_directions, _directions_language, _directions_style_name.GetGPValue(), _travel_mode, _impedance.GetGPValue(), _time_zone_usage_for_time_fields.GetGPValue(), _save_output_layer, _overrides, _save_route_data, _time_impedance.GetGPValue(), _distance_impedance.GetGPValue(), _populate_stop_shapes, _output_format.GetGPValue(), _ignore_invalid_order_locations, _out_unassigned_stops, _out_stops, _out_routes, _out_directions, _solve_succeeded, _out_network_analysis_layer, _out_route_data, _out_result_file, _output_network_analysis_layer_package];

        /// <summary>
        /// <para>Orders</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Orders")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _orders { get; set; }


        /// <summary>
        /// <para>Depots</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Depots")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _depots { get; set; }


        /// <summary>
        /// <para>Routes</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Routes")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _routes { get; set; }


        /// <summary>
        /// <para>Breaks</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Breaks")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _breaks { get; set; } = null;


        /// <summary>
        /// <para>Time Units</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time Units")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _time_units_value _time_units { get; set; } = _time_units_value._Minutes;

        public enum _time_units_value
        {
            /// <summary>
            /// <para>Seconds</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Seconds")]
            [GPEnumValue("Seconds")]
            _Seconds,

            /// <summary>
            /// <para>Minutes</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Minutes")]
            [GPEnumValue("Minutes")]
            _Minutes,

            /// <summary>
            /// <para>Hours</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Hours")]
            [GPEnumValue("Hours")]
            _Hours,

            /// <summary>
            /// <para>Days</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Days")]
            [GPEnumValue("Days")]
            _Days,

        }

        /// <summary>
        /// <para>Distance Units</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Distance Units")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _distance_units_value _distance_units { get; set; } = _distance_units_value._Miles;

        public enum _distance_units_value
        {
            /// <summary>
            /// <para>Meters</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Meters")]
            [GPEnumValue("Meters")]
            _Meters,

            /// <summary>
            /// <para>Kilometers</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Kilometers")]
            [GPEnumValue("Kilometers")]
            _Kilometers,

            /// <summary>
            /// <para>Feet</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Feet")]
            [GPEnumValue("Feet")]
            _Feet,

            /// <summary>
            /// <para>Yards</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Yards")]
            [GPEnumValue("Yards")]
            _Yards,

            /// <summary>
            /// <para>Miles</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Miles")]
            [GPEnumValue("Miles")]
            _Miles,

            /// <summary>
            /// <para>NauticalMiles</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NauticalMiles")]
            [GPEnumValue("NauticalMiles")]
            _NauticalMiles,

        }

        /// <summary>
        /// <para>Analysis Region</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Analysis Region")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _analysis_region_value? _analysis_region { get; set; } = null;

        public enum _analysis_region_value
        {
            /// <summary>
            /// <para>Europe</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Europe")]
            [GPEnumValue("Europe")]
            _Europe,

            /// <summary>
            /// <para>Japan</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Japan")]
            [GPEnumValue("Japan")]
            _Japan,

            /// <summary>
            /// <para>Korea</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Korea")]
            [GPEnumValue("Korea")]
            _Korea,

            /// <summary>
            /// <para>MiddleEastAndAfrica</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("MiddleEastAndAfrica")]
            [GPEnumValue("MiddleEastAndAfrica")]
            _MiddleEastAndAfrica,

            /// <summary>
            /// <para>NorthAmerica</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NorthAmerica")]
            [GPEnumValue("NorthAmerica")]
            _NorthAmerica,

            /// <summary>
            /// <para>SouthAmerica</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("SouthAmerica")]
            [GPEnumValue("SouthAmerica")]
            _SouthAmerica,

            /// <summary>
            /// <para>SouthAsia</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("SouthAsia")]
            [GPEnumValue("SouthAsia")]
            _SouthAsia,

            /// <summary>
            /// <para>Thailand</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Thailand")]
            [GPEnumValue("Thailand")]
            _Thailand,

        }

        /// <summary>
        /// <para>Default Date</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Default Date")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _default_date { get; set; } = null;


        /// <summary>
        /// <para>UTurn at Junctions</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("UTurn at Junctions")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _uturn_policy_value _uturn_policy { get; set; } = _uturn_policy_value._ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY;

        public enum _uturn_policy_value
        {
            /// <summary>
            /// <para>ALLOW_UTURNS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ALLOW_UTURNS")]
            [GPEnumValue("ALLOW_UTURNS")]
            _ALLOW_UTURNS,

            /// <summary>
            /// <para>NO_UTURNS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_UTURNS")]
            [GPEnumValue("NO_UTURNS")]
            _NO_UTURNS,

            /// <summary>
            /// <para>ALLOW_DEAD_ENDS_ONLY</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ALLOW_DEAD_ENDS_ONLY")]
            [GPEnumValue("ALLOW_DEAD_ENDS_ONLY")]
            _ALLOW_DEAD_ENDS_ONLY,

            /// <summary>
            /// <para>ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY")]
            [GPEnumValue("ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY")]
            _ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY,

        }

        /// <summary>
        /// <para>Time Window Factor</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time Window Factor")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _time_window_factor_value _time_window_factor { get; set; } = _time_window_factor_value._Medium;

        public enum _time_window_factor_value
        {
            /// <summary>
            /// <para>High</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("High")]
            [GPEnumValue("High")]
            _High,

            /// <summary>
            /// <para>Medium</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Medium")]
            [GPEnumValue("Medium")]
            _Medium,

            /// <summary>
            /// <para>Low</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Low")]
            [GPEnumValue("Low")]
            _Low,

        }

        /// <summary>
        /// <para>Spatially Cluster Routes</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Spatially Cluster Routes")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _spatially_cluster_routes { get; set; } = null;


        /// <summary>
        /// <para>Route Zones</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Route Zones")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _route_zones { get; set; } = null;


        /// <summary>
        /// <para>Route Renewals</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Route Renewals")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _route_renewals { get; set; } = null;


        /// <summary>
        /// <para>Order Pairs</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Order Pairs")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _order_pairs { get; set; } = null;


        /// <summary>
        /// <para>Excess Transit Factor</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Excess Transit Factor")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _excess_transit_factor_value _excess_transit_factor { get; set; } = _excess_transit_factor_value._Medium;

        public enum _excess_transit_factor_value
        {
            /// <summary>
            /// <para>High</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("High")]
            [GPEnumValue("High")]
            _High,

            /// <summary>
            /// <para>Medium</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Medium")]
            [GPEnumValue("Medium")]
            _Medium,

            /// <summary>
            /// <para>Low</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Low")]
            [GPEnumValue("Low")]
            _Low,

        }

        /// <summary>
        /// <para>Point Barriers</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Point Barriers")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _point_barriers { get; set; } = null;


        /// <summary>
        /// <para>Line Barriers</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Line Barriers")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _line_barriers { get; set; } = null;


        /// <summary>
        /// <para>Polygon Barriers</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Polygon Barriers")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _polygon_barriers { get; set; } = null;


        /// <summary>
        /// <para>Use Hierarchy</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Use Hierarchy")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _use_hierarchy_in_analysis { get; set; } = null;


        /// <summary>
        /// <para>Restrictions</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Restrictions")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _restrictions { get; set; } = null;


        /// <summary>
        /// <para>Attribute Parameter Values</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Attribute Parameter Values")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _attribute_parameter_values { get; set; } = null;


        /// <summary>
        /// <para>Populate Route Lines</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Populate Route Lines")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _populate_route_lines { get; set; } = null;


        /// <summary>
        /// <para>Route Line Simplification Tolerance</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Route Line Simplification Tolerance")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public string _route_line_simplification_tolerance { get; set; } = "10 Meters";


        /// <summary>
        /// <para>Populate Directions</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Populate Directions")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _populate_directions { get; set; } = null;


        /// <summary>
        /// <para>Directions Language</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Directions Language")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _directions_language { get; set; } = null;


        /// <summary>
        /// <para>Directions Style Name</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Directions Style Name")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _directions_style_name_value _directions_style_name { get; set; } = _directions_style_name_value._NA_Desktop;

        public enum _directions_style_name_value
        {
            /// <summary>
            /// <para>NA Desktop</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NA Desktop")]
            [GPEnumValue("NA Desktop")]
            _NA_Desktop,

            /// <summary>
            /// <para>NA Navigation</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NA Navigation")]
            [GPEnumValue("NA Navigation")]
            _NA_Navigation,

        }

        /// <summary>
        /// <para>Travel Mode</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Travel Mode")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _travel_mode { get; set; } = null;


        /// <summary>
        /// <para>Impedance</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Impedance")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _impedance_value _impedance { get; set; } = _impedance_value._Drive_Time;

        public enum _impedance_value
        {
            /// <summary>
            /// <para>Drive Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Drive Time")]
            [GPEnumValue("Drive Time")]
            _Drive_Time,

            /// <summary>
            /// <para>Truck Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Truck Time")]
            [GPEnumValue("Truck Time")]
            _Truck_Time,

            /// <summary>
            /// <para>Walk Time</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Walk Time")]
            [GPEnumValue("Walk Time")]
            _Walk_Time,

            /// <summary>
            /// <para>Minutes</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Minutes")]
            [GPEnumValue("Minutes")]
            _Minutes,

            /// <summary>
            /// <para>TravelTime</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("TravelTime")]
            [GPEnumValue("TravelTime")]
            _TravelTime,

            /// <summary>
            /// <para>TimeAt1KPH</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("TimeAt1KPH")]
            [GPEnumValue("TimeAt1KPH")]
            _TimeAt1KPH,

            /// <summary>
            /// <para>WalkTime</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("WalkTime")]
            [GPEnumValue("WalkTime")]
            _WalkTime,

            /// <summary>
            /// <para>TruckMinutes</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("TruckMinutes")]
            [GPEnumValue("TruckMinutes")]
            _TruckMinutes,

            /// <summary>
            /// <para>TruckTravelTime</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("TruckTravelTime")]
            [GPEnumValue("TruckTravelTime")]
            _TruckTravelTime,

        }

        /// <summary>
        /// <para>Time Zone Usage for Time Fields</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time Zone Usage for Time Fields")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _time_zone_usage_for_time_fields_value _time_zone_usage_for_time_fields { get; set; } = _time_zone_usage_for_time_fields_value._GEO_LOCAL;

        public enum _time_zone_usage_for_time_fields_value
        {
            /// <summary>
            /// <para>GEO_LOCAL</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("GEO_LOCAL")]
            [GPEnumValue("GEO_LOCAL")]
            _GEO_LOCAL,

            /// <summary>
            /// <para>UTC</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("UTC")]
            [GPEnumValue("UTC")]
            _UTC,

        }

        /// <summary>
        /// <para>Save Output Network Analysis Layer</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Save Output Network Analysis Layer")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _save_output_layer { get; set; } = null;


        /// <summary>
        /// <para>Overrides</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Overrides")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _overrides { get; set; } = null;


        /// <summary>
        /// <para>Save Route Data</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Save Route Data")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _save_route_data { get; set; } = null;


        /// <summary>
        /// <para>Time Impedance</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Time Impedance")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _time_impedance_value _time_impedance { get; set; } = _time_impedance_value._TravelTime;

        public enum _time_impedance_value
        {
            /// <summary>
            /// <para>Minutes</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Minutes")]
            [GPEnumValue("Minutes")]
            _Minutes,

            /// <summary>
            /// <para>TravelTime</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("TravelTime")]
            [GPEnumValue("TravelTime")]
            _TravelTime,

            /// <summary>
            /// <para>TimeAt1KPH</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("TimeAt1KPH")]
            [GPEnumValue("TimeAt1KPH")]
            _TimeAt1KPH,

            /// <summary>
            /// <para>WalkTime</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("WalkTime")]
            [GPEnumValue("WalkTime")]
            _WalkTime,

            /// <summary>
            /// <para>TruckMinutes</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("TruckMinutes")]
            [GPEnumValue("TruckMinutes")]
            _TruckMinutes,

            /// <summary>
            /// <para>TruckTravelTime</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("TruckTravelTime")]
            [GPEnumValue("TruckTravelTime")]
            _TruckTravelTime,

        }

        /// <summary>
        /// <para>Distance Impedance</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Distance Impedance")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _distance_impedance_value _distance_impedance { get; set; } = _distance_impedance_value._Kilometers;

        public enum _distance_impedance_value
        {
            /// <summary>
            /// <para>Miles</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Miles")]
            [GPEnumValue("Miles")]
            _Miles,

            /// <summary>
            /// <para>Kilometers</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Kilometers")]
            [GPEnumValue("Kilometers")]
            _Kilometers,

        }

        /// <summary>
        /// <para>Populate Stop Shapes</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Populate Stop Shapes")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _populate_stop_shapes { get; set; } = null;


        /// <summary>
        /// <para>Output Format</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Format")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _output_format_value _output_format { get; set; } = _output_format_value._Feature_Set;

        public enum _output_format_value
        {
            /// <summary>
            /// <para>Feature Set</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Feature Set")]
            [GPEnumValue("Feature Set")]
            _Feature_Set,

            /// <summary>
            /// <para>JSON File</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("JSON File")]
            [GPEnumValue("JSON File")]
            _JSON_File,

            /// <summary>
            /// <para>GeoJSON File</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("GeoJSON File")]
            [GPEnumValue("GeoJSON File")]
            _GeoJSON_File,

        }

        /// <summary>
        /// <para>Ignore Invalid Order Locations</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Ignore Invalid Order Locations")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _ignore_invalid_order_locations { get; set; } = null;


        /// <summary>
        /// <para>Output Unassigned Stops</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Unassigned Stops")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_unassigned_stops { get; set; }


        /// <summary>
        /// <para>Output Stops</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Stops")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_stops { get; set; }


        /// <summary>
        /// <para>Output Routes</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Routes")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_routes { get; set; }


        /// <summary>
        /// <para>Output Directions</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Directions")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_directions { get; set; }


        /// <summary>
        /// <para>Solve Succeeded</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Solve Succeeded")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _solve_succeeded { get; set; }


        /// <summary>
        /// <para>Output Network Analysis Layer</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Network Analysis Layer")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_network_analysis_layer { get; set; }


        /// <summary>
        /// <para>Output Route Data</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Route Data")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_route_data { get; set; }


        /// <summary>
        /// <para>Output Result File</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Result File")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_result_file { get; set; }


        /// <summary>
        /// <para>Output Network Analysis Layer Package</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Network Analysis Layer Package")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _output_network_analysis_layer_package { get; set; }


        public EditVehicleRoutingProblem SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}